package ace.module.product.api.model.dto;

import io.swagger.v3.oas.annotations.media.Schema;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;

import jakarta.validation.constraints.*;
import jakarta.annotation.Nullable;
import java.io.Serializable;

/**
* 分类关系链,仅用于查询与搜索业务,非实时数据,数据来源PmsCategory data transform object.
*
* @author Caspar
*/
@Data
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@Schema(title = PmsCategoryChainDto.TABLE_DESC)
public class PmsCategoryChainDto implements Serializable {

  public static final String TABLE_NAME = "pms_category_chain";
  public static final String TABLE_DESC = "分类关系链,仅用于查询与搜索业务,非实时数据,数据来源PmsCategory";
  public static final String ID_COLUMN_NAME = "id";
  public static final String ID_TITLE = "id";
  public static final String ID_DESC = "";
  public static final String PMS_APP_ID_COLUMN_NAME = "pms_app_id";
  public static final String PMS_APP_ID_TITLE = "商品应用id";
  public static final String PMS_APP_ID_DESC = "";
  public static final String NODE_ID_COLUMN_NAME = "node_id";
  public static final String NODE_ID_TITLE = "节点id";
  public static final String NODE_ID_DESC = "";
  public static final String NODE_ROOT_ID_COLUMN_NAME = "node_root_id";
  public static final String NODE_ROOT_ID_TITLE = "根节点id";
  public static final String NODE_ROOT_ID_DESC = "";
  public static final String NODE_END_ID_COLUMN_NAME = "node_end_id";
  public static final String NODE_END_ID_TITLE = "结尾节点id";
  public static final String NODE_END_ID_DESC = "0=null";
  public static final String NODE_PATH_ID_COLUMN_NAME = "node_path_id";
  public static final String NODE_PATH_ID_TITLE = "路径节点id";
  public static final String NODE_PATH_ID_DESC = "";
  public static final String LEVEL_COLUMN_NAME = "level";
  public static final String LEVEL_TITLE = "分类层级,0=根 1=1级 2=2级";
  public static final String LEVEL_DESC = "";
  public static final String CATEGORY_TYPE_COLUMN_NAME = "category_type";
  public static final String CATEGORY_TYPE_TITLE = "分类类型";
  public static final String CATEGORY_TYPE_DESC = "{@link PmsCategory#getType}";
  public static final String DELETE_FLAG_COLUMN_NAME = "delete_flag";
  public static final String DELETE_FLAG_TITLE = "删除标识";
  public static final String DELETE_FLAG_DESC = "0-未删除";
  public static final String CREATE_TIME_COLUMN_NAME = "create_time";
  public static final String CREATE_TIME_TITLE = "创建时间";
  public static final String CREATE_TIME_DESC = "单位-毫秒";
  public static final String UPDATE_TIME_COLUMN_NAME = "update_time";
  public static final String UPDATE_TIME_TITLE = "更新时间";
  public static final String UPDATE_TIME_DESC = "单位-毫秒";
  public static final String ROW_VERSION_COLUMN_NAME = "row_version";
  public static final String ROW_VERSION_TITLE = "版本号和乐观锁";
  public static final String ROW_VERSION_DESC = "";

  @Schema(title = ID_TITLE, description = ID_DESC)
  private Long id;

  @Schema(title = PMS_APP_ID_TITLE, description = PMS_APP_ID_DESC)
  private Long pmsAppId;

  @Schema(title = NODE_ID_TITLE, description = NODE_ID_DESC)
  private Long nodeId;

  @Schema(title = NODE_ROOT_ID_TITLE, description = NODE_ROOT_ID_DESC)
  private Long nodeRootId;

  @Schema(title = NODE_END_ID_TITLE, description = NODE_END_ID_DESC)
  private Long nodeEndId;

  @Schema(title = NODE_PATH_ID_TITLE, description = NODE_PATH_ID_DESC)
  private Long nodePathId;

  @Schema(title = LEVEL_TITLE, description = LEVEL_DESC)
  private Long level;

  @Schema(title = CATEGORY_TYPE_TITLE, description = CATEGORY_TYPE_DESC)
  private Integer categoryType;

  @Schema(title = DELETE_FLAG_TITLE, description = DELETE_FLAG_DESC)
  private Long deleteFlag;

  @Schema(title = CREATE_TIME_TITLE, description = CREATE_TIME_DESC)
  private Long createTime;

  @Schema(title = UPDATE_TIME_TITLE, description = UPDATE_TIME_DESC)
  private Long updateTime;

  @Schema(title = ROW_VERSION_TITLE, description = ROW_VERSION_DESC)
  private Long rowVersion;

}